'use client'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Badge } from '@/components/ui/badge'; import Database from 'lucide-react/dist/esm/icons/database'; import ArrowLeft from 'lucide-react/dist/esm/icons/arrow-left'; import Plus from 'lucide-react/dist/esm/icons/plus'; import Edit from 'lucide-react/dist/esm/icons/edit'; import Trash from 'lucide-react/dist/esm/icons/trash'; import Save from 'lucide-react/dist/esm/icons/save'; import CheckCircle from 'lucide-react/dist/esm/icons/check-circle'; import Zap from 'lucide-react/dist/esm/icons/zap'; import Code from 'lucide-react/dist/esm/icons/code'; import Info from 'lucide-react/dist/esm/icons/info'; import Link from 'next/link'; import { useState } from 'react'; import { useUsers, useCreateUser, useUpdateUser, useDeleteUser, type User } from '@/hooks/useDatabaseOperations'; export default function TestORMPage() { const [userForm, setUserForm] = useState({ name: '', email: '' }); const [editingUser, setEditingUser] = useState(null); // Users hooks const { data: users, isLoading: usersLoading } = useUsers(); const createUser = useCreateUser(); const updateUser = useUpdateUser(); const deleteUser = useDeleteUser(); const handleCreateUser = async (e: React.FormEvent) => { e.preventDefault(); try { await createUser.mutateAsync(userForm); setUserForm({ name: '', email: '' }); } catch (error) { console.error('Error creating user:', error); } }; const handleUpdateUser = async (e: React.FormEvent) => { e.preventDefault(); if (!editingUser) return; try { await updateUser.mutateAsync({ id: editingUser._id, data: userForm }); setEditingUser(null); setUserForm({ name: '', email: '' }); } catch (error) { console.error('Error updating user:', error); } }; const handleDeleteUser = async (id: string) => { try { await deleteUser.mutateAsync(id); } catch (error) { console.error('Error deleting user:', error); } }; return (
{/* Hero Section */}
{/* Header Navigation */}
Mongoose ORM
{/* Hero Content */}

Mongoose ORM Testing

Test database operations with Mongoose ORM. Create, read, update, and delete users with MongoDB and Mongoose.

MongoDB Ready Schema Validation
{/* Spacer */}
{/* Main Content */}
{/* Left Column - Setup Instructions */}
{/* Setup Status */}

Mongoose Active

Database operations ready

MongoDB connection
Schema validation
Middleware support
{/* Setup Instructions */} Setup Instructions Mongoose Follow these steps to configure Mongoose ORM
{/* Step 1 */}
1

Environment Setup

cp .env.example .env.local

Add your MongoDB connection string

{/* Step 2 */}
2

Start MongoDB

mongodb

Start MongoDB service or use MongoDB Atlas

Mongoose Benefits

Mongoose provides schema validation, middleware, and excellent MongoDB integration with TypeScript support.

{/* Right Column - User Management */}
{/* Create/Edit User Form */} {editingUser ? 'Edit User' : 'Create User'} {editingUser ? 'Update user information' : 'Add a new user to the database'}
setUserForm({ ...userForm, name: e.target.value })} placeholder="Enter user name" required />
setUserForm({ ...userForm, email: e.target.value })} placeholder="Enter email address" required />
{editingUser && ( )}
{/* Users List */} Users ({users?.length || 0}) Mongoose ORM Manage users in the database {usersLoading ? (

Loading users...

) : users && users.length > 0 ? (
{users.map((user) => (
{user.name.charAt(0).toUpperCase()}

{user.name}

{user.email}

Created: {new Date(user.createdAt).toLocaleDateString()}

))}
) : (

No users found

Create your first user to get started with database operations

)}
{/* Features Section */}

Schema Validation

Built-in schema validation with TypeScript support for type-safe operations

MongoDB Integration

Seamless integration with MongoDB including middleware and advanced queries

Flexible Schema

Flexible schema design with middleware support for complex data operations

); }